對分散式系統來說若是要一個個設定系統參數或環境不只耗時耗力,隨著數量越來越多,手動設定或是管理出錯的機會也相對提高,藉由將所有的設定參數集中於一處方便管理設定,個別服務啟動的時候依據自身的環境變數設定自動讀取對應的設定檔,不只免去了針對個別系統設定的耗時耗力,也免去了管理個別系統設定檔的麻煩。
SteeltoeOSS Configuration提供了利用key-value pair在服務啟動時,從指定位置(ex:檔案或遠端位置)讀取設定參數的能力,裡面提供了兩種configuration provider:
依照http://steeltoe.io/docs/steeltoe-configuration/#2-0-config-server-provider/ 的指示
git clone https://github.com/SteeltoeOSS/configserver.git
執行mvnw spring-boot:run
要是出現錯誤 JAVA_HOME未設定,代表沒有安裝JDK或是沒有設定環境變數JAVA_HOME
https://docs.oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/
依照這篇文章下載JDK,然後設定環境變數JAVA_HOME={JDK安裝目錄}
Ps:我使用JDK 9.0.1時會跑mvnw出現錯誤,改用JDK 8u152正常
再跑一次mvnw spring-boot:run ,開瀏覽器輸入localhost:8888後出現下面畫面就是成功啟動configserver了
接下來從這個步驟開始 http://steeltoe.io/docs/steeltoe-configuration/#2-1-2-get-sample
git clone https://github.com/SteeltoeOSS/Samples.git
cd Samples/Configuration/src/AspDotNetCore/SimpleCloudFoundry
dotnet restore --configfile nuget.config
dotnet run -f netcoreapp2.0
出現以下訊息就是成功了
打開localhost:5000可以看到網頁
切換到http://localhost:5000/Home/ConfigServer 會看到從外部Github來源讀取的設定
中斷上一步驟的程式,將ASPNETCORE_ENVIRONMENT設成Development,
再跑一次dotnet run -f netcoreapp2.0
切換到http://localhost:5000/Home/ConfigServer ,會看到變數值有改變
由VS2017啟動網頁的話,會從launchSettings.json讀入ASPNETCORE_ENVIRONMENT變數,
利用dotnet run啟動網頁的話,會讀取全域或是該terminal的ASPNETCORE_ENVIRONMENT變數環境變數,如果更改ASPNETCORE_ENVIRONMENT變數後讀取的變數值沒有改變,可以稍微看一下是不是這邊的問題
在這個例子中,所有相關的設定檔都放在下面的Github repo
https://github.com/steeltoeoss/config-repo